{
    "connectors": {
        "sentseg": {
            "protocol": "http",
            "timeout": 1.5,
            "url": "http://sentseg:8011/sentseg"
        }
    },
    "services": {
        "last_chance_service": {
            "connector": {
                "protocol": "python",
                "class_name": "PredefinedTextConnector",
                "response_text": "Sorry, something went wrong inside. Please tell me, what did you say.",
                "annotations": {
                    "sentseg": {
                        "punct_sent": "Sorry, something went wrong inside. Please tell me, what did you say.",
                        "segments": [
                            "Sorry, something went wrong inside.",
                            "Please tell me, what did you say."
                        ]
                    }
                }
            },
            "state_manager_method": "add_bot_utterance_last_chance",
            "tags": [
                "last_chance"
            ]
        },
        "timeout_service": {
            "connector": {
                "protocol": "python",
                "class_name": "PredefinedTextConnector",
                "response_text": "Sorry, I need to think more on that. Let's talk about something else.",
                "annotations": {
                    "sentseg": {
                        "punct_sent": "Sorry, I need to think more on that. Let's talk about something else.",
                        "segments": [
                            "Sorry, I need to think more on that.",
                            "Let's talk about something else."
                        ]
                    }
                }
            },
            "state_manager_method": "add_bot_utterance_last_chance",
            "tags": [
                "timeout"
            ]
        },
        "response_annotator_selectors": {
            "connector": {
                "protocol": "python",
                "class_name": "skill_selectors.post_annotator_selector.connector:PostAnnotatorSelectorConnector",
                "annotator_names": [
                    "sentseg"
                ]
            },
            "response_formatter": "state_formatters.dp_formatters:simple_formatter_service",
            "tags": [
                "selector"
            ]
        },
        "response_annotators": {
            "sentseg": {
                "connector": "connectors.sentseg",
                "dialog_formatter": "state_formatters.dp_formatters:last_bot_utt_dialog",
                "response_formatter": "state_formatters.dp_formatters:simple_formatter_service",
                "previous_services": [
                    "response_annotator_selectors"
                ],
                "state_manager_method": "add_annotation_prev_bot_utt"
            }
        },
        "annotators": {
            "sentseg": {
                "connector": "connectors.sentseg",
                "dialog_formatter": "state_formatters.dp_formatters:preproc_last_human_utt_dialog",
                "response_formatter": "state_formatters.dp_formatters:simple_formatter_service",
                "previous_services": [
                    "annotators.spelling_preprocessing"
                ],
                "state_manager_method": "add_annotation"
            },
            "intent_catcher": {
                "connector": {
                    "protocol": "http",
                    "timeout": 1.0,
                    "url": "http://intent-catcher:8014/detect"
                },
                "dialog_formatter": "state_formatters.dp_formatters:last_utt_sentseg_segments_dialog",
                "response_formatter": "state_formatters.dp_formatters:simple_formatter_service",
                "previous_services": [
                    "annotators.spelling_preprocessing",
                    "annotators.sentseg"
                ],
                "state_manager_method": "add_annotation"
            },
            "voice_service": {
                "connector": {
                    "protocol": "http",
                    "timeout": 16, 
                    "url": "http://voice-service:8333/respond"
                },
                "dialog_formatter": "state_formatters.dp_formatters:voice_formatter_service",
                "response_formatter": "state_formatters.dp_formatters:simple_formatter_service",
                "state_manager_method": "add_annotation"
            }
        },
        "skill_selectors": {
            "rule_based_selector": {
                "connector": {
                    "protocol": "python",
                    "class_name": "skill_selectors.rule_based_selector.connector:RuleBasedSkillSelectorConnector"
                },
                "dialog_formatter": "state_formatters.dp_formatters:base_skill_selector_formatter_dialog",
                "response_formatter": "state_formatters.dp_formatters:simple_formatter_service",
                "previous_services": [
                    "annotators"
                ],
                "tags": [
                    "selector"
                ]
            }
        },
        "skills": {
            "dff_program_y_skill": {
                "connector": {
                    "protocol": "http",
                    "timeout": 2.0,
                    "url": "http://dff-program-y-skill:8008/respond"
                },
                "dialog_formatter": "state_formatters.dp_formatters:dff_program_y_skill_formatter",
                "response_formatter": "state_formatters.dp_formatters:skill_with_attributes_formatter_service",
                "previous_services": [
                    "skill_selectors"
                ],
                "state_manager_method": "add_hypothesis"
            },
            "dff_intent_responder_skill": {
                "connector": {
                    "protocol": "http",
                    "timeout": 2.0,
                    "url": "http://dff-intent-responder-skill:8012/respond"
                },
                "dialog_formatter": "state_formatters.dp_formatters:dff_intent_responder_skill_formatter",
                "response_formatter": "state_formatters.dp_formatters:skill_with_attributes_formatter_service",
                "previous_services": [
                    "skill_selectors"
                ],
                "state_manager_method": "add_hypothesis",
                "is_enabled": true,
                "source": {
                    "component": "components/CmQGq1Xn5YOaMwNIb4bEpA.yml",
                    "service": "skills/dff_intent_responder_skill/service_configs/dff-intent-responder-skill"
                }
            },
            "dummy_skill": {
                "connector": {
                    "protocol": "python",
                    "class_name": "skills.dummy_skill.connector:DummySkillConnector"
                },
                "dialog_formatter": "state_formatters.dp_formatters:utt_sentrewrite_modified_last_dialog",
                "response_formatter": "state_formatters.dp_formatters:skill_with_attributes_formatter_service",
                "previous_services": [
                    "skill_selectors"
                ],
                "state_manager_method": "add_hypothesis"
            },
            "dialogpt": {
                "connector": {
                    "protocol": "http",
                    "timeout": 3.0,
                    "url": "http://dialogpt:8125/respond"
                },
                "dialog_formatter": "state_formatters.dp_formatters:last_utt_and_history_dialog",
                "response_formatter": "state_formatters.dp_formatters:skill_with_attributes_formatter_service",
                "previous_services": [
                    "skill_selectors"
                ],
                "state_manager_method": "add_hypothesis"
            },
            "dff_voice_skill": {
                "connector": {
                    "protocol": "http",
                    "timeout": 5, 
                    "url": "http://dff-voice-skill:8444/respond"
                },
                "dialog_formatter": "state_formatters.dp_formatters:dff_voice_skill_formatter",
                "response_formatter": "state_formatters.dp_formatters:skill_with_attributes_formatter_service",
                "previous_services": [
                    "skill_selectors",
                    "voice_service"
                ],
                "state_manager_method": "add_hypothesis"
            }
        },
        "candidate_annotators": {
            "sentence_ranker": {
                "connector": {
                    "protocol": "http",
                    "timeout": 1,
                    "url": "http://sentence-ranker:8128/respond"
                },
                "dialog_formatter": "state_formatters.dp_formatters:sentence_ranker_formatter",
                "response_formatter": "state_formatters.dp_formatters:simple_formatter_service",
                "previous_services": ["skills"],
                "state_manager_method": "add_hypothesis_annotation_batch"
            }
        },
        "response_selectors": {
            "response_selector": {
                "connector": {
                    "protocol": "http",
                    "timeout": 1.0,
                    "url": "http://convers-evaluation-selector:8009/respond"
                },
                "dialog_formatter": "state_formatters.dp_formatters:full_history_dialog",
                "response_formatter": "state_formatters.dp_formatters:base_response_selector_formatter_service",
                "previous_services": [
                    "candidate_annotators"
                ],
                "state_manager_method": "add_bot_utterance"
            }
        }
    },
    "metadata": {
        "display_name": "Dream Multimodal",
        "author": "DeepPavlov",
        "description": "Multimodal version of DeepPavlov Dream Socialbot.",
        "version": "0.1.0",
        "date_created": "2022-12-12T12:12:00",
        "ram_usage": "50 GB",
        "gpu_usage": "50 GB",
        "disk_usage": "50 GB"
    }
}
